home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ARexxTools / arxced27.lha / arxced / makexref / makexref.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1995-09-08  |  1.2 KB  |  62 lines

  1. /* 
  2. ** $VER: makexref.rexx 1.0 (8.9.95) Rolf Rotvel
  3. **
  4. ** Uses rexxtricks.library
  5. */
  6.  
  7. parse arg file
  8.  
  9. call addlib('rexxsupport.library', 0, -30, 0)
  10. call addlib('rexxtricks.library', 0, -30, 0)
  11.  
  12. if ~readfile(file, line) then do
  13.     say 'Error reading '||file
  14.     exit 10
  15. end
  16.  
  17. if upper(word(line.1, 1)) ~= '@DATABASE' then do
  18.     say file||' is not an AmigaGuide file'
  19.     exit 10
  20. end
  21.  
  22. filename = '"'||filepart(file)||'"'
  23. xref = makesuffix(file, 'xref', 'r')
  24.  
  25. num = 1
  26. len = 0
  27. sta = 1
  28. do forever
  29.     chk = lsearch('@node*', line, sta,, 'p')
  30.     if chk = -1 then leave  /* No more nodes */
  31.     sta = chk + 1
  32.  
  33.     node = word(line.chk, 2)
  34.     if pos('"', node) > 0 then parse var line.chk '"' node '"'
  35.     if upper(node) = 'MAIN' then iterate
  36.  
  37.     if right(node, 2) = '()' then what.num = ' 0 1'  /* It's a function */
  38.     else what.num = ' 0 0'
  39.  
  40.     if words(node) > 1 then node.num = '"'||node||'"'
  41.     else node.num = node
  42.  
  43.     len = max(len, length(node.num))
  44.     num = num + 1
  45. end
  46. node.0 = num - 1
  47.  
  48. write.1 = 'XREF:'
  49. num = 2
  50. len = len + 2
  51.  
  52. do n = 1 to node.0
  53.     write.num = left(node.n, len)||filename||what.n
  54.     num = num + 1
  55. end
  56. write.num = '#'
  57. write.0 = num
  58.  
  59. call writefile(xref, write)
  60.  
  61. exit
  62.